﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
using extremeEvents.Eventos;

namespace extremeEvents
{
    public sealed class Navegador
    {
        //singleton
        private static readonly Navegador instance = new Navegador();
        private Navegador() { }

        public static Navegador Instance
        {
            get
            {
                return instance;
            }
        }

        //guardar referencia para o formulario inicial
        public Home main { get; set; }
        //guardar referencia para a lista de paginas (tag)
        public TabControl tab { get; set; }

        public EditarUtilizador editarUtiForm { get; set; }

        public EditarEvento editarEvtForm { get; set; }

        public Guid utilizador_selecionado { get; set; }

        public int id_evento {get; set;}

        public int id_categoria { get; set; }

        /// <summary>
        /// Defini o aspecto inicial do formulario
        /// </summary>
        /// <param name="main"></param>
        public void init (Home main) {
            //gravar referencia do form pricipal
            this.main = main;
            //procurar o controlador tab
            this.tab = (TabControl)this.main.Controls.Find("mainTab", true)[0];
        }

        /// <summary>
        /// Carrega o menu inicial
        /// </summary>
        public void carregar() {
            //ir para o painel principal
            this.irPara("menuPage");
            //mostrar o banner de topo
            ((TopBanner)this.main.Controls.Find("topBanner", true)[0]).Show();
            //mostar o nome do utilizador no topo
            ((Label)this.main.Controls.Find("benvindoLabel", true)[0]).Text = "Benvindo " + DLGenerica.Instance.utilizador.Nome + ",";
        }

        /// <summary>
        /// Função utilizada para navegar por diferentes paginas (neste caso, separadores)
        /// </summary>
        /// <param name="menu">A pagina de destino (id)</param>
        public void irPara(string menu)
        {
            //ir para a pagina definida
            this.tab.SelectTab(menu);
            //definir o titulo do menu
            ((Label)this.main.Controls.Find("titleLabel", true)[0]).Text = tab.SelectedTab.Text;
            
        }

        /// <summary>
        /// Função utilizada para navegar por diferentes paginas (neste caso, separadores)
        /// </summary>
        /// <param name="menu">A pagina de destino (id)</param>
        public void refresh(string menu)
        {
            //ir para a pagina definida
            this.tab.SelectTab(menu);
            //definir o titulo do menu
            this.tab.SelectedTab.Hide();
            this.tab.SelectedTab.Show();

        }
    }
}
